其他
【CVPR2016论文快讯】细粒度视觉分类的最新进展
本文对刚刚落下帷幕的CVPR2016会议中关于细粒度视觉分类问题的论文进行了总结,深入浅出地对涌现的新方法进行了介绍。通过总结、比较CVPR16会议细粒度视觉分类方法的进展,总结了该领域研究的新动向,希望给读者带来思索与启发。
作为新出现的一个研究方向,细粒度视觉分类(Fine-Grained Visual Categorization, FGVC)近年来获得了越来越多的关注。细粒度分类属于目标识别的一个子领域,其主要目的是在相同基本类别下对其繁多的子类别进行区分。与Pascal VOC等对船、自行车和汽车进行分类的任务不同,Fine-Grained是对于视觉上非常相似的目标进行区分。以狗品种分类为例,二哈(哈士奇雪橇犬)与阿拉斯加雪橇犬分别如下图所示,想要对其进行区分必须要有一定的相关先验知识。
再比如法国斗牛犬和波士顿梗犬,对比如下图所示,是不是更傻傻分不清楚?对于没有相关经验的人来说,想要进行准确的分类实属不易,更不要说让计算机自动进行分类了。
对于如此富有挑战性的任务,很多的工作取得了不错的成果。今年的计算机视觉与模式识别会议(CVPR 2016)中,录用了不少对于Fine-Grained识别的文章,从特征的构建到网络结构的改进再到新的训练手段,出现了许多新颖的方案,下面对其中代表性文章进行介绍。
1. Picking Deep Filter Responses for Fine-grained Image Recognition[1]
整个方案分两步走:首先,利用深度filter的选择性来挖掘对于某些模式敏感的filter (比如鸟的喙与腿,如下图所示)从而得到一个weak的Part Detector。进而通过该Weak Detector作为初始来训练一个Discriminative Part Detector;
第二步便是利用第一步的Part Detector进行图像patch的检测然后提取deep descriptors,利用提出的Spatially Weighted Fisher Vector (SWFV)对deep descriptors进行pooling,从而得到图像SWFV-CNN特征描述。文章中报告的结果表明,利用该方法在CUB-200-2011和Stanford Dogs两个数据集上都取得了较优异的成果。值得一提的是,该方法并未利用人工标注信息(bbox+parts),在测试集上相比于利用标注信息的方法有了显著提高。该方法并非采用End-to-End的结构,在中间的环节如Spatial weighting, FV pooling需要针对数据分布的不同而做细致调整。
2. SPDA-CNN: Unifying Semantic Part Detection and Abstraction for Fine-grained Recognition[2]
与已有的一些方法不同,作者并没有使用Region+CNN+SVM这样的框架,而是将Detection与Classification构建了一个End-to-End的网络。在Part Proposal阶段,作者利用了全局形状与几何限制条件,通过引入这样的先验知识,生成的proposals与传统方法相比减少了一个数量级(200 vs 2000)。然后基于proposal的结果利用Fast-RCNN生成Head,Back,Belly,Breast,Leg,Wing,Tail七个Parts,部分检测结果如下图所示,结果明显优于Selective Search。
总的来说,文章作者基于鸟的形状特性,在Proposal生成阶段构造了几何限制条件,并基于此提出了一种Part Detection的方法。而Parts在鸟类Fine-Grained分类问题上对结果的提高有明显帮助。作者将Part Detection和Classification结合成一个End-to-End的结构,同时进行训练与测试,取得了优异的结果。
3.Part-Stacked CNN for Fine-Grained Visual Categorization[3]
方法的特点在于,在分类阶段利用了Two-stream的结构在object-level和part-level进行特征提取,进而对feature map进行拼接,由此构建包含有全局与局部的特征描述。作者命名该架构为PS-CNN,为了兼顾性能与效率,作者采用基于AlexNet的CNN模型。在object-level与part-level特征拼接过程中,由于两部分输入数据尺度存在差异,因此需要在feature map中进行尺度调整。对于Object-level,抽取了pool5层的feature map(6×6),而Part-level则提取了conv5的feature map(27×27),并在conv5的基础上根据part定位的结果进行crop得到相应的feature map(6×6)。最后拼接过的feature map送入全连接层,得到4096维的特征向量。
而且最终分类结果表明,利用了part的结果要远远优于仅适用BBox的结果(76.7% vs 69%),当然本文章所给出的启发并不局限于鸟类的分类。文章所提出的PS-CNN架构不仅可以用于鸟类等Fine-grained任务,还可以用于别的分类任务,框架比较general,而且在测试阶段在GPU K80平台上可以达到20 frames/sec,满足实时性的要求。
4. Mining Discriminative Triplets of Patches for Fine-Grained Classification[4]
A、B、C可以被看做patch的Appearance model,利用顺序限制(左)和形状限制(右)进行中层特征的表示,构建了Bag of Triplets特征表达,方法流程如下图所示
文章的实验主要在车辆数据集(BMVC-14, Cars-196),实验结果中表明,仅仅使用HOG特征的分类准确率就超过了fine-tune的AlexNet。在结合深度特征的基础上,该方法取得了state-of-the-art的结果。这篇文章并没有采用End-to-End的结构,而是挖掘Mid-level中有信息价值的表达,除了手动挖掘,深度网络是否也可以自动挖掘呢?这是否可以对我们做Fine-Grained任务引发一些思考呢?
5. 应对Fine-grained训练数据有限等问题的系列工作
部分Fine-Grained分类结果(笔者已经看的饿了),在深度模型训练过程中,除了常见的crop、rotate等data augmentation手段,Feng Zhou他们利用Bootstrapping来增加训练数据,为了解决类内-类间的问题,利用了基于Triplet loss的的Deep metric learning方法。更具体的细节笔者就不在这里详述,感兴趣的读者可以关注对应的文章
[2] Zhang, H., Xu, T., Elhoseiny, M., Huang, X., Zhang, S., Elgammal, A., & Metaxas, D. SPDA-CNN: Unifying Semantic Part Detection and Abstraction for Fine-grained Recognition.
[3] Huang, S., Xu, Z., Tao, D., & Zhang, Y. Part-Stacked CNN for Fine-Grained Visual Categorization.
[4] Wang, Y., Choi, J., Morariu, V. I., & Davis, L. S. Mining Discriminative Triplets of Patches for Fine-Grained Classification.
[5] Zhou, Feng, & Yuanqing Lin. Fine-grained Image Classification by Exploring Bipartite-Graph Labels.
[6] Zhang, X., Zhou, F., Lin, Y., & Zhang, S. Embedding Label Structures for Fine-Grained Feature Representation.
[7] Cui, Y., Zhou, F., Lin, Y., & Belongie, S. Fine-grained categorization and dataset bootstrapping using deep metric learning with humans in the loop.
致谢:在此感谢中科院计算所博士生刘昕,在准备深度学习暑期研讨班的繁杂事务中仍抽出时间对本文提出了建设性的修改意见,感谢腾讯优图实验室对本文工作的支持。